package com.byit.controller;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.plugins.Page;
import com.byit.builder.MapBuilder;
import com.byit.config.MinioConfig;
import com.byit.constant.DefaultValue;
import com.byit.domain.AppNews;
import com.byit.enums.PromptInfo;
import com.byit.msg.MessageResult;
import com.byit.service.IAppNewsService;
import com.byit.utils.PageModel;
import com.byit.utils.StringUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @ClassName AppNews
 * @Description 首页新闻
 * @Author lxp
 * @Date 2019-01-03 14:46
 **/
@Controller
@RequestMapping("/app/news")
public class AppNewsController {

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @Autowired
    private IAppNewsService appNewsService;

    @Autowired
    private MinioConfig minioConfig;

    /**
     * app首页新闻
     */
    @GetMapping("/list")
    @ResponseBody
    public Object list(HttpServletRequest request,
                       @RequestParam(value = "title", defaultValue = "") String title,
                       @RequestParam(value = "level", defaultValue = "") String level,
                       @RequestParam(value = "type", defaultValue = "") String type,
                       @RequestParam(value = "source", defaultValue = "") String source,
                       @RequestParam(value = "page", defaultValue = DefaultValue.PAGE_FIRST) int page,
                       @RequestParam(value = "limit", defaultValue = DefaultValue.PAGE_SIZE) int limit) {
        Page<AppNews> pageInfo = new Page<>(page, limit);
        Map<String, Object> params = MapBuilder.newMap(4).setParam("level", level)
                .setParam("type", type)
                .setParam("source", source).ok();
        if (null != title && !"".equals(title)) {
            params.put("title", "%" + StringUtil.decodeSpecialCharsWhenLikeUseBackslash(title) + "%");
        }
        Page<JSONObject> result = appNewsService.selectPublishedAppnewsAll(pageInfo, params, request);
        return MessageResult.success(result.getRecords(), PageModel.page(result));
    }


    /**
     * app首页新闻类型
     */
    @GetMapping("/allNewsTypes")
    @ResponseBody
    public Object getNewsType(@RequestParam(value = "type", defaultValue = "") String type) {

        if (StringUtil.isEmpty(type)) {
            type = "newsType";
        }
        /**
         * 新闻类型
         */
        List<JSONObject> appNewsTypes = appNewsService.getAppNewsType(type);
        return MessageResult.warpper(PromptInfo.SYS_SECCUSS, appNewsTypes);
    }


    /**
     * app首页新闻 新闻详情
     */
    @GetMapping("/{id}.html")
    public Object selectAppNewsById(@PathVariable("id") Long id) {
        AppNews appNews = appNewsService.selectById(id);

        if (appNews == null) {
            return MessageResult.error();
        }
        ModelAndView view = new ModelAndView("news");
        //跟新浏览量
        long pview = appNews.getCoutViews() + 1;
        appNews.setContent(appNews.getContent().replaceAll("src=\"/zhjy/newsimages", "src=\"" + minioConfig.getSearchMinio() + "/zhjy/newsimages"));
        appNews.setCoutViews(pview);
        view.addObject("news", appNews);
        view.addObject("timestamp", new Date());

        appNewsService.insertOrUpdate(appNews);

        return view;

    }
//    @GetMapping("/{id}.html")
//    public Object news(@PathVariable("id") Long id) {
//        News news = newsService.selectById(id);
//
//        if (news == null) {
//            return "error";
//        }
//        ModelAndView view = null;
//        if(StringUtils.isNotEmpty(news.getWechatUrl())){
//            view = new ModelAndView("redirect:"+news.getWechatUrl());
//        }else{
//            view = new ModelAndView("news");
//        }
//
//        view.addObject("news", news);
//        view.addObject("timestamp", new Date());
//
//
//
//        // 更新浏览量
//        newsService.updateAddView(id);
//
//
//        return view;
//    }

/*    public static void main(String[] args) {
        String ss = "<p><ucapcontent></ucapcontent></p><p style=\"text-align: center; text-indent: 2em; font-family: 宋体; font-size: 12pt; margin-bottom: 2em;\"><img align=\"center\" border=\"0\" src=\"./newsimages/e7102f195b734e33b6ac7212cedccd37.jpg\"/><br/><br/><img align=\"center\" border=\"0\" src=\"./newsimages/a6965e8ca37343e7a679c0199f884cc8.jpg\"/><br/></p><p style=\"text-indent: 2em; font-family: 宋体; font-size: 12pt; margin-bottom: 2em;\">1月1日，第四次全国经济普查现场登记工作正式启动。1月2日是启动后首个工作日，省委常委、副省长、省政府第四次全国经济普查领导小组组长王宁一行到成都市锦江区视察调研现场登记工作。</p><p style=\"text-indent: 2em; font-family: 宋体; font-size: 12pt; margin-bottom: 2em;\">“数据登记有没有困难？经济普查的意义了解吗？”1月2日下午，王宁走进成都创客空间商务服务有限公司，普查指导员冯驰、普查员梁彪正在对企业开展现场登记工作。王宁仔细了解现场登记流程、内容等细节，并向企业相关负责人了解其对第四次全国经济普查的认识和理解。</p><p style=\"text-indent: 2em; font-family: 宋体; font-size: 12pt; margin-bottom: 2em;\">在第四次全国经济普查现场登记工作阶段，四川有8万余名普查工作人员将分别对70万个二、三产业单位和22万余户个体经营户开展现场登记和抽样调查，包括普查对象名称、统一社会信用代码、注册类型、行业代码等属性指标，以及登记营业收入、资产总额、从业人员等经济指标。</p><p style=\"text-indent: 2em; font-family: 宋体; font-size: 12pt; margin-bottom: 2em;\">王宁强调，第四次全国经济普查是一次重大的国情国力调查，对于全面摸清我国经济社会发展状况，科学指导和推动高质量发展，具有重要的意义。现场登记工作决定着普查数据质量的高低，全省8万余名普查工作人员要本着对人民高度负责的态度，坚持依法普查，严格执行普查方案，指导普查对象准确填报数据，客观反映真实情况，坚决反对和防止弄虚作假。同时，要切实履行保密义务，不泄露普查对象的个体隐私和商业秘密，切实维护普查对象合法权益。</p><p style=\"text-indent: 2em; font-family: 宋体; font-size: 12pt; margin-bottom: 2em;\">省政府副秘书长钟承林，省直相关部门负责同志参加调研。</p><p></p>";

        Map<String, String> param = new HashMap<>();
        param.put("title","中国");
        param.put("content", "人民");

        Map<String, String> typeMap = new HashMap<>();
        typeMap.put("level","火大了");

        param.put("other", JSONObject.toJSONString(typeMap));
        System.out.println(param);
       // System.out.println(ss.replaceAll("src=\"", "src=\"" + "IP"));
    }*/
}
